#define  _CRT_SECURE_NO_WARNINGS


#include<stdio.h>

//int main()
//{
//	printf("* * * * * * * * * *\n");
//	printf("I like c program!\n");
//	printf("* * * * * * * * * *\n");
//
//
//	return 0;
//}

#include<math.h>


//int main()
//{
//	double d = 3.1415926;
//	printf("%lf\n", sin(d));
//
//	return 0;
//}\]\


//int main()
//{
//	double r = 3;
//	printf("%.2lf %.2lf", 3.14 * r * r, 2 * 3.14 * r);
//
//	return 0;
//}


//#define PI 3.1415926
//int main()
//{
//	char m;
//	double r;
//	scanf("%lf %c", &r,&m);
//	switch (m)
//	{
//	case 'A':
//		printf("%.2lf\n", PI * r * r);
//		break;
//	case 'C':
//		printf("%.2lf\n", 2 * PI * r);
//		break;
//	case 'B':
//		printf("%.2lf %.2lf\n", PI * r * r, PI * 2 * r);
//		break;
//	}
//
//	return 0;
//}\]



//int main()
//{
//	int y, m1, d1, m2, d2;
//	scanf("%d %d %d %d %d", &y, &m1, &d1, &m2, &d2);
//	if (m1 == m2 && d1 == d2)
//		printf("1\n");
//	else
//		printf("%d\n", (m2 - m1) * 30 + (d2 - d1));
//
//	return 0;
//}



//int main()
//{
//	int y, m1, d1, m2, d2;
//	scanf("%d %d %d %d %d", &y, &m1, &d1, &m2, &d2);
//	y = ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) ? 1 : 0;
//	int i = 0;
//	int sum = 0 - d1;
//	for (i = m1; i < m2; i++)
//	{
//		switch (i)
//		{
//		case 1:
//		case 3:
//		case 5:
//		case 7:
//		case 8:
//		case 10:
//		case 12:
//			sum += 31;
//			break;
//		case 2:
//			sum = sum + 28 + y;
//			break;
//		case 4:
//		case 6:
//		case 9:
//		case 11:
//			sum += 30;
//			break;
//		}
//	}
//	printf("%d\n", sum + d2 + 1);
//
//	return 0;
//}


//int main()
//{
//	int i = 0;
//	int sum = 1;
//	for (i = 9; i >= 1; i--)
//	{
//		sum *= 2;
//		sum += 1;
//	}
//	printf("%d\n", sum);
//
//	return 0;
//}



//int main()
//{
//	int i, j, k, a, count = 0;
//	for (i = 1; i < 10; i++)
//	{
//		for (j = 1; j < 10; j++)
//		{
//			for (k = 1; k < 10; k++)
//			{
//				for (a = 1; a < 10; a++)
//				{
//					if (i + j + k + a != 10)
//						continue;
//					if (i == j || j == k || k == a || a == i)
//						continue;
//					printf("%d %d %d %d\n", i, j, k, a);
//					count++;
//					if (count % 5 == 0)
//						printf("\n");
//				}
//			}
//		}
//	}
//
//	return 0;
//}



//int main()
//{
//	int x = 1, i;
//	for (i = 9; i >= 1; i--)
//	{
//		x = 2 * (x + 1);
//	}
//	printf("%d\n", x);
//
//	return 0;
//}


//int main()
//{
//	int year = 0;
//	double money = 8000;
//	for (year = 1; year <= 10; year++)
//	{
//		money += money * 0.028;
//		if (money > 10000)
//			break;
//	}
//	printf("%.2lf\n", money);
//
//	return 0;
//}



//int main()
//{
//	int arr[20];
//	int i = 0;
//	int n = 10;
//	int sum = 0;
//	int avg = 0;
//	for (i = 0; i < 20; i++)
//	{
//		arr[i] = n;
//		n++;
//		sum += arr[i];
//		avg += arr[i];
//	}
//	int max = arr[0];
//	int min = arr[0];
//	int j = 0;
//	for (j = 0; j < 20; j++)
//	{
//		if (arr[j] > max)
//			max = arr[j];
//		else if (arr[j] < min)
//			min = arr[j];
//	}
//	printf("%d %d %d %d\n", max, min, avg / 20, sum);
//
//	return 0;
//}



//int main()
//{
//	printf("  *  \n");
//	printf(" *** \n");
//	printf("*****\n");
//
//	return 0;
//}

#include<string.h>


//int main()
//{
//	char arr[] = "abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc";
//	char a[20] = { 0 };
//	gets(a);
//	int i = 0;
//	int n = strlen(arr);
//	int m = strlen(a);
//	int sum = 0;
//	for (i = 0; arr[i] != '\0'; i++)
//	{
//		int j = 0;
//		int k = 0;
//		for (j = i, k = 0; a[k] != '\0' && arr[j] == a[k]; j++, k++)
//		{
//			if (a[k] == '\0')
//			{
//				sum++;
//				i = j - 1;
//			}
//		}
//	}
//	printf("%d\n", sum);
//
//	return 0;
//}


//int main()
//{
//	char a[20] = { 0 }, b[20] = { 0 };
//	gets(a);
//	int n = 0;
//	scanf("%d", &n);
//	int count = 0;
//	int temp = n;
//	while (temp)
//	{
//		count++;
//		temp /= 10;
//	}
//	int i = 0;
//	for (i = count - 1; i >= 0; i--)
//	{
//		b[i] = n % 10 + '0';
//		n /= 10;
//	}
//	printf("%s\n", strcat(a, b));
//
//	return 0;
//}


//int main()
//{
//	char arr[20] = { 0 };
//	gets(arr);
//	int i = 0;
//	int sum = 0;
//	for (i = 0; i < strlen(arr); i++)
//	{
//		if ((arr[i] == 'a') || (arr[i] == 'u') || (arr[i] == 'e') || (arr[i] == 'o') || (arr[i] == 'i') || (arr[i] == 'A') || (arr[i] == 'E') || (arr[i] == 'U') 
//			|| (arr[i] == 'O') || (arr[i] == 'I'))
//			sum++;
//	}
//	printf("%d\n", sum);
//
//	return 0;
//}



//void pcopy(char* arr, int m, int n)
//{
//	int i = 0;
//	for (i = m; i < m + n; i++)
//	{
//		printf("%c", *(arr + i));
//	}
//}
//int main()
//{
//	char arr[100] = { 0 };
//	gets(arr);
//	int m = 0, n = 0;
//	scanf("%d %d", &m, &n);
//	int i = 0;
//	pcopy(arr, m, n);
//
//	return 0;
//}

#include<assert.h>


//int fun(char* arr)
//{
//	assert(arr);
//	int count = 0;
//	while (*arr != '\0')
//	{
//		count++;
//		arr++;
//	}
//	return count;
//}
//int main()
//{
//	char arr[20] = { 0 };
//	gets(arr);
//	printf("%d\n", fun(arr));
//
//	return 0;
//}


//int fun(int* arr, int sz)
//{
//	int i = 0;
//	int avg = 0;
//	for (i = 0; i < sz; i++)
//	{
//		avg += *(arr + i);
//	}
//	return (avg / sz);
//}
//int main()
//{
//	int arr[10] = { 10,20,30,40,50 };
//	printf("%d\n", fun(arr, 5));
//
//	return 0;
//}


//int main()
//{
//	int month = 0;
//	scanf("%d", &month);
//	switch (month)
//	{
//	case 1:
//		printf("January\n");
//		break;
//	case 2:
//		printf("February\n");
//		break;
//	case 3:
//		printf("Marth\n");
//		break;
//	case 4:
//		printf("April\n");
//		break;
//	case 5:
//		printf("May\n");
//		break;
//	case 6:
//		printf("June\n");
//		break;
//	case 7:
//		printf("July\n");
//		break;
//	case 8:
//		printf("August\n");
//		break;
//	case 9:
//		printf("September\n");
//		break;
//	case 10:
//		printf("October\n");
//		break;
//	case 11:
//		printf("November\n");
//		break;
//	case 12:
//		printf("December\n");
//		break;
//	}
//
//	return 0;
//}



//int main()
//{
//	char arr[20] = { 0 };
//	gets(arr);
//	int i = 0;
//	int len = strlen(arr);
//	int flag = 0;
//	for (i = 0; i < len; i++)
//	{
//		if (arr[i] == arr[len - 1 - i])
//			flag = 1;
//		else
//			flag = 0;
//	}
//	if (flag == 1)
//		printf("YES\n");
//	else if (flag == 0)
//		printf("NO\n");
//
//	return 0;
//}

#include<stdlib.h>


//int cmp_int(const void* e1, const void* e2)
//{
//	return *(int*)e1 - *(int*)e2;
//}
//int main()
//{
//	int arr[3] = { 0 };
//	int i = 0;
//	for (i = 0; i < 3; i++)
//		scanf("%d", &arr[i]);
//	qsort(arr, 3, sizeof(int), cmp_int);
//	int j = 0;
//	for (j = 0; j < 3; j++)
//		printf("%d ", arr[j]);
//
//	return 0;
//}



//int main()
//{
//	double x, y;
//	scanf("%lf", &x);
//	if (x == 0)
//		y = 0;
//	else
//		y = 1 / x;
//	printf("%.1lf\n", y);
//
//	return 0;
//}



//int main()
//{
//	int j = 1;
//	int sum = 0;
//	int i = 0;
//	for (i = 1; i <= 4; i++)
//	{
//		j *= i;
//		sum += j;
//	}
//	printf("%d\n", sum);
//
//	return 0;
//}



//int is_prime(int n)
//{
//	int i = 0;
//	int flag = 1;
//	for (i = 2; i < n; i++)
//	{
//		if (n % i == 0)
//			flag = 0;
//	}
//	return flag;
//}
//int main()
//{
//	int i = 0;
//	for (i = 2; i < 100; i++)
//	{
//		if (is_prime(i) == 1)
//			printf("%d ", i);
//	}
//
//	return 0;
//}



//int main()
//{
//	char arr[100] = { 0 };
//	gets(arr);
//	int count[4] = { 0 };
//	int i = 0;
//	while (arr[i++] != '$')
//	{
//		if ((arr[i] >= 'a' && arr[i] <= 'z') || (arr[i] >= 'A' && arr[i] <= 'Z'))
//			count[0]++;
//		else if (arr[i] >= '0' && arr[i] <= '9')
//			count[1]++;
//		else if (arr[i] == ' ')
//			count[2]++;
//		else
//			count[3]++;
//	}
//	int j = 0;
//	for (j = 0; j < 4; j++)
//	{
//		printf("%d ", count[j]);
//	}
//
//	return 0;
//}



//int main()
//{
//	int i = 0;
//	int j = 0;
//	for (i = 1; i < 10; i++)
//	{
//		for (j = 1; j <= i; j++)
//		{
//			printf("%d*%d=%d\t", j, i, i * j);
//		}
//		printf("\n");
//	}
//
//	return 0;
//}


//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int i = 0;
//	for (i = 1; i <= n; i++)
//	{
//		int j = 0;
//		for (j = 1; j <= n - i; j++)
//			printf(" ");
//		int k = 0;
//		for (k = 1; k <= i; k++)
//			printf("%d ", i);
//		printf("\n");
//	}
//
//	return 0;
//}


//int main()
//{
//	int arr[30] = { 0 };
//	int i = 0;
//	int temp = 2;
//	int avg = 0;
//	int count[30] = { 0 };
//	int j = 0;
//	for (i = 0; i < 30; i++)
//	{
//		if (i % 5 == 0 && i > 0)
//		{
//			count[j] = avg / 5;
//			j++;
//			avg = 0;
//		}
//		arr[i] = temp;
//		temp += 2;
//		avg += arr[i];
//	}
//	int k = 0;
//	for(k = 0; k < j; k++)
//	{
//		printf("%d ", count[k]);
//	}
//
//	return 0;
//}



//int main()
//{
//	int arr[2][3] = { 0 };
//	int i = 0;
//	int j = 0;
//	int temp = 2;
//	for (i = 0; i < 2; i++)
//	{
//		for (j = 0; j < 3; j++)
//		{
//			arr[i][j] = temp;
//			temp += 2;
//		}
//	}
//	int a = 0;
//	int b = 0;
//	for (a = 0; a < 3; a++)
//	{
//		for (b = 0; b < 2; b++)
//		{
//			printf("%d ", arr[b][a]);
//		}
//		printf("\n");
//	}
//
//	return 0;
//}



//int main()
//{
//	int arr[5][5] = { 0 };
//	int i = 0;
//	int j = 0;
//	int temp = 1;
//	for (i = 0; i < 5; i++)
//	{
//		for (j = 0; j < 5; j++)
//		{
//			arr[i][j] = temp;
//			temp++;
//		}
//	}
//	int a = 0;
//	int b = 0;
//	for (a = 0; a < 5; a++)
//	{
//		for (b = 0; b < 5; b++)
//		{
//			if (a + b <= 4)
//				printf("%d\t", arr[a][b]);
//		}
//		printf("\n");
//	}
//
//	return 0;
//}



//int main()
//{
//	char a[100] = { 0 }, b[100] = { 0 };
//	gets(a);
//	gets(b);
//	int i = 0;
//	int j = 0;
//	int len1 = strlen(a);
//	int len2 = strlen(b);
//	if (len2 < 5)
//	{
//		for (i = len1; i < len1 + len2; i++)
//		{
//			a[i] = b[j];
//			j++;
//		}
//	}
//	else
//	{
//		for (i = len1; i < len2 + 5; i++)
//		{
//			a[i] = b[j];
//			j++;
//		}
//	}
//	puts(a);
//
//	return 0;
//}


//int main()
//{
//	char a[100] = { 0 }, b[] = "ab";
//	gets(a);
//	int i = 0;
//	int len_a = strlen(a);
//	int max = a[0];
//	int x = 0;
//	for (i = 0; i < len_a; i++)
//	{
//		if (a[i] > max)
//		{
//			max = a[i];
//			x = i;
//		}
//	}
//	int j = 0;
//	int len_b = strlen(b);
//	int k = 0;
//	for (j = x + 1; j < x + 1 + len_b; j++)
//	{
//		a[j] = b[k];
//		k++;
//	}
//	puts(a);
//
//	return 0;
//}



//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int count = 0;
//	while (n != -1)
//	{
//		count++;
//		scanf("%d", &n);
//	}
//	printf("%d\n", count);
//
//	return 0;
//}



int main()
{
	int arr[10][10] = { 0 };
	int n = 0;
	scanf("%d", &n);
	int i = 0;
	int temp = 0;
	int j = 0;
	int m = 0;
	if (n % 2 == 0)
		m = n / 2;
	else if (n % 2 != 0)
		m = n / 2 + 1;
	for (i = 0; i < m; i++)
	{
		for (j = i; j < n - i; j++)
		{
			temp++;
			arr[i][j] = temp;
		}
		for (j = i + 1; j < n - i; j++)
		{
			temp++;
			arr[j][n - i - 1] = temp;
		}
		for (j = n - i - 2; j >= i; j--)
		{
			temp++;
			arr[n - i - 1][j] = temp;
		}
		for (j = n - i - 2; j >= i + 1; j--)
		{
			temp++;
			arr[j][i] = temp;
		}
	}
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n; j++)
		{
			printf("%d\t", arr[i][j]);
		}
		printf("\n");
	}

	return 0;
}